package com.study.readerwriter;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import org.junit.Test;

/**
* @Name: FileWriterReaderTest
* @Description: 文件字符流测试类
* @Author: 李超	lc_jack@foxmail.com
* @CreateDate: 2017-1-15 下午8:32:28 
* @Version: V1.0
 */
public class FileWriterReaderTest {
	
	/**
	* @Name: fileWriter
	* @Description: 文件字符写入流测试方法
	* 说明：
	* 	FileWriter类：用来写入字符文件的便捷类。
	* 	构造方法：
	* 		FileWriter(File file) 根据给定的 File 对象构造一个 FileWriter 对象。
	* 		FileWriter(File file, boolean append) 根据给定的 File 对象构造一个 FileWriter 对象，并指定文件内容的追加属性
	* 		FileWriter(String fileName) 根据给定的文件名构造一个 FileWriter 对象。
	* 		FileWriter(String fileName, boolean append) 根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
	* 	写数据方法：
	* 		public void write(int c)	写入一个字符
	* 		public void write(char cbuf[])	写入一个字符数组
	* 		public void write(char cbuf[], int off, int len) 写入字符数组的一部分
	* 		public void write(String str) 写入一个字符串
	* 		public void write(String str, int off, int len) 写入字符串的一部分
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-15 下午8:33:32
	* @Parameters: 
	* @Return: void
	 */
	@Test
	public void fileWriter() throws IOException {
		//1、创建文件字符写入流对象
		FileWriter fw = new FileWriter("fos5.txt") ;
		//2、写数据
		//写第一个字符
//		char ch = 'a' ;
//		fw.write(a) ; //fos5.txt:	a
		//写一个字符数组
//		char[] cbuf = {'a', 'b', 'c', 'd', 'e', 'f'} ;
//		fw.write(buf) ; //fos5.txt:	abcdef
		//写入字符数组的一部分
//		fw.write(cbuf, 0, 3) ; //fos5.txt:	abc
		//写入一个字符串
		String data = "hello, FileWrite." ;
		fw.write(data) ; //fos5.txt:	hello, FileWrite.
		//写入字符串的一部分
//		fw.write(data, 2, 3) ; //fos5.txt:	llo
		//3、释放资源
		fw.close() ;
	}
	
	/**
	* @Name: fileReader
	* @Description: 文件字符读取流测试方法
	* 说明：
	* 	FileReader类：用来读取字符文件的便捷类。
	* 	构造方法：
	* 		FileReader(File file) 在给定从中读取数据的 File 的情况下创建一个新 FileReader。
	* 		FileReader(String fileName) 在给定从中读取数据的文件名的情况下创建一个新 FileReader。
	* 	读方法：
	* 		 public int read() 读取一个字符，返回读取的字符，如果已到达流的末尾，则返回 -1 
	* 		 public int read(char cbuf[]) 读取一个字符数组，返回读取的字符数，如果已到达流的末尾，则返回 -1 
	* 		 public int read(char cbuf[], int offset, int length) 读取字符数组缓冲中指定长度的内容。，返回读取的字符数，如果已到达流的末尾，则返回 -1 
	* @Author: 李超	lc_jack@foxmail.com
	* @Version: V1.0
	* @CreateDate: 2017-1-15 下午8:51:17
	* @Parameters: 
	* @Return: void
	 */
	@Test
	public void fileReader() throws IOException {
		//1、创建文件字符读取流对象
		FileReader fr = new FileReader("fos2.txt") ;
		//2、读取文件内容
		//每次读取一个字符
//		int b = 0 ;
//		while((b = fr.read()) != -1) {
//			System.out.print((char)b);
//		}
		//每次读取一个字符数组
		char[] cbuf = new char[1024] ;
		int len = 0 ;
		while((len = fr.read(cbuf)) != -1) {
			System.out.println(new String(cbuf, 0, len));
		}
		//3、释放资源
		fr.close() ;
	}
	

}
